var userId = null;
var $tabs = null;
$(function () {
    // 处理scroll tab
    $tabs = $('#OMSMainTab').scrollTabs({
        scrollOptions: {
            closable: true,
            showNavWhenNeeded: true,
            selectTabAfterScroll: true
        }
    });
    $tabs.find("li:first > span").remove(); // 仪表盘tab页不可能关闭

    // 获取当前用户的可用菜单
	$.ajax({
        type:"GET",
        url:"/menu/getUserAvailableMenus.action",
        contentType: "application/json;charset=utf-8",
        dataType: "json",
        async: false,//异步
        success:function(data) {
            // 没有得到登录信息就退到登录页面。
            if (data.userId == undefined) {
                window.top.location.href = "/login.html";
            }
            $('#side-menu').append(data.menuHtml);
            $('#side-menu').metisMenu();
            userId=data.userId;
            var userName=data.userName;
            $("#userName").html(userName);

            $("#sidebar > .menu-scroll").slimScroll({
                width: "100%"
            });
            
            // 画index页面企业选择下拉列表框
            if (data.userProjectMap) {
                $.each(data.userProjectMap, function (key, value) {
                    $('#projectSwitch').append("<option value='" + key + "'>" + value + "</option>");
                });
                // 页面刷新也保留上次的选择
                $('#projectSwitch').val(data.userCurrentProjectId);
                $("#projectSwitch").change(function() {
                    var enterpriseId = $('#projectSwitch').val();
                    $.ajax({
                        type:"POST",
                        url:"/user/changeCurrentProject.action?projectId=" + enterpriseId,
                        contentType: "application/json;charset=utf-8",
                        dataType: "json",
                        async: true,//同步
                        success:function(data) {
                            if (data.result == "failed") {
                                showScoMessage("error", data.msg);
                            } else {
                                showScoMessage("ok", '切换项目成功');
                                initMenu();
                                // 清除仪表盘以外的其它tabs
                                $("#OMSMainTab > div.ui-widget-header.ui-corner-all.ui-scroll-tabs-header > div.ui-scroll-tabs-view > ul > li > a").each(function(index, element) {
                                    var tabName = element.innerText
                                    if (!!tabName && element.innerText.indexOf("仪表盘") < 0) { // 不是仪表盘tab
                                        $tabs.scrollTabs('removeTab', $(element));
                                    }
                                });
                                // 模拟点击一下左边的仪表盘结点
                                $('#side-menu > li:nth-child(2) > a').click();

                                $("#contentFrame").attr("src", $("#contentFrame").attr("src"));
                            }
                        }
                    });
                }); 
            }
        }
    });
	
    $(window).on("load resize", function () {
        if ($(this).width() < 768) {
            $('body').removeClass();
            $('div.sidebar-collapse').addClass('collapse');
        } else {
            $('body').addClass($.cookie('menu_style') + ' ' + $.cookie('header'));
            $('div.sidebar-collapse').removeClass('collapse');
            $('div.sidebar-collapse').css('height', 'auto');
        }
    });

    
    //BEGIN TOPBAR DROPDOWN
    $('.dropdown-slimscroll').slimScroll({
        "height": '250px',
        "wheelStep": 30
    });
    //END TOPBAR DROPDOWN

    //BEGIN TOOTLIP
    $("[data-toggle='tooltip'], [data-hover='tooltip']").tooltip();
    //END TOOLTIP

    //BEGIN POPOVER
    $("[data-toggle='popover'], [data-hover='popover']").popover();
    //END POPOVER

    //BEGIN FULL SCREEN
    $('.btn-fullscreen').click(function() {
        if (!document.fullscreenElement &&    // alternative standard method
            !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement ) {  // current working methods
            if (document.documentElement.requestFullscreen) {
                document.documentElement.requestFullscreen();
            } else if (document.documentElement.msRequestFullscreen) {
                document.documentElement.msRequestFullscreen();
            } else if (document.documentElement.mozRequestFullScreen) {
                document.documentElement.mozRequestFullScreen();
            } else if (document.documentElement.webkitRequestFullscreen) {
                document.documentElement.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);
            }
        } else {
            if (document.exitFullscreen) {
                document.exitFullscreen();
            } else if (document.msExitFullscreen) {
                document.msExitFullscreen();
            } else if (document.mozCancelFullScreen) {
                document.mozCancelFullScreen();
            } else if (document.webkitExitFullscreen) {
                document.webkitExitFullscreen();
            }
        }
    });
    //END FULL SCREEN

    //BEGIN BACK TO TOP
    $(window).scroll(function(){
        if ($(this).scrollTop() < 200) {
            $('#totop') .fadeOut();
        } else {
            $('#totop') .fadeIn();
        }
    });
    $('#totop').on('click', function(){
        $('html, body').animate({scrollTop:0}, 'fast');
        return false;
    });
    //END BACK TO TOP

    //BEGIN CHECKBOX TABLE
    $('.checkall').on('ifChecked ifUnchecked', function(event) {
        if (event.type == 'ifChecked') {
            $(this).closest('table').find('input[type=checkbox]').iCheck('check');
        } else {
            $(this).closest('table').find('input[type=checkbox]').iCheck('uncheck');
        }
    });
    //END CHECKBOX TABLE

    $('.option-demo').hover(function() {
        $(this).append("<div class='demo-layout animated fadeInUp'><i class='fa fa-magic mrs'></i>Demo</div>");
    }, function() {
        $('.demo-layout').remove();
    });
      $('#header-topbar-page .demo-layout').live('click', function() {
        var HtmlOption = $(this).parent().detach();
        $('#header-topbar-option-demo').html(HtmlOption).addClass('animated flash').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
            $(this).removeClass('animated flash');
        });
        $('#header-topbar-option-demo').find('.demo-layout').remove();
        return false;
    });
    $('#title-breadcrumb-page .demo-layout').live('click', function() {
        var HtmlOption = $(this).parent().html();
        $('#title-breadcrumb-option-demo').html(HtmlOption).addClass('animated flash').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
            $(this).removeClass('animated flash');
        });
        $('#title-breadcrumb-option-demo').find('.demo-layout').remove();
        return false;
    });
    // CALL FUNCTION RESPONSIVE TABS
    fakewaffle.responsiveTabs(['xs', 'sm']);

    // ===================== 自定义函数 =====================
    //退出系统
    $("#logOut").click(function(){
 	  window.location.href="/user/logout.action";
    });
    
    // 处理修改密码对话框
    handleChangePassword();
    
});
$('#searchOrderData').keydown(function(e){
    if (e.keyCode==13 && $('#topbar-search').hasClass('open')) {
        $('#topbar-search span').click();
        $('#searchOrderData').unbind('blur');
    }
});
$('#topbar-search span').on('click', function (e) {
    if ($('#topbar-search').hasClass('open')) {
        changeMenu($('#searchOrderData').val());
        $('#topbar-search').removeClass('open');
    } else {
        $('#topbar-search').addClass('open');
        $('#searchOrderData').focus();
        $('#searchOrderData').bind('blur', function (e) {
            setTimeout(function(){
                $('#topbar-search').removeClass('open');
            }, 300);
        });
    }
});
function changeMenu(orderTradeCode) {
    $('a').each(function() {
        var str = $(this).attr("onclick");
        if (str!=undefined && str.indexOf("orderList.html") > 0) {
            $('#searchOrderData').val('');
            $("#q_orderTradeCode").val(orderTradeCode);
            if (!$(this).parents(':eq(2)').hasClass('active')) {
                $(this).parents(':eq(2)').children('a').get(0).click();   
            }
            if (!$(this).hasClass('active')) {
                $(this).click();
            }
            return false;
        }
    });
}
function changeMenuByHtmlName(htmlName) {
    $('a').each(function() {
        var str = $(this).attr("onclick");
        if (str!=undefined && str.indexOf(htmlName) > 0) {
            if (!$(this).parents(':eq(2)').hasClass('active')) {
                $(this).parents(':eq(2)').children('a').get(0).click();   
            }
            if (!$(this).hasClass('active')) {
                $(this).click();
            }
            return false;
        }
    });
}
function initMenu() {
    $('a').each(function() {
        var str = $(this).attr("onclick");
        if (str!=undefined && str.indexOf('menuItemSelected')>-1 && str.indexOf('.html')>-1 && str.indexOf('dashboard.html')==-1) {
            if ($(this).parents(':eq(2)').hasClass('active')) {
                $(this).parents(':eq(2)').children('a').get(0).click();
                return false;
            }
        }
    });
}
function menuItemSelected(menuItem,url) {
    if (url == "") {
        return;
    }
    if (url.indexOf('dashboard.html') > -1) {
        initMenu();
    }
    $("#side-menu").find("li").removeClass("active");
    $(menuItem).parent().parent().parent().addClass("active");
    $(menuItem).parent().addClass("active");
    var menuItemName = $(menuItem).find("span").text();
    var menuName = $(menuItem).parent().parent().prev().find("span").text();
    menuItemName = menuItemName.replace(/(^\s*)|(\s*$)/g, "");
    if (menuItemName != undefined && menuItemName != null && menuItemName != "") {
        addTab(menuItemName, url);
    }
}

// 自定义函数
// 共用，提示对话框
function showModalAlert(content){
	$('#modalAlertTitle').text(content);
	$('#modal-alert').modal('show');
}

//共用，提示对话框 为了显示回车换行
function showModalAlertPretty(content){
    $('#modalAlertTitle').html(content);
    $('#modal-alert').modal('show');
}

// 共用，确认对话框
function showModalConfirm(content, callback) {
	$("#modalConfirmContent").text(content);
	$('#btnModalOK').unbind();
	$("#modal-confirm").unbind();
	$("#btnModalOK").on('click', callback);
	$('#modal-confirm').modal({show:false, backdrop:'static'});
	$('#modal-confirm').modal({show:true, backdrop:'static'});
}

//连续弹出多个confirm场合用
function showModalConfirms(content, callback) {
    $("#modalConfirmContent").text(content);
    $('#btnModalOK').unbind();
    $("#modal-confirm").unbind();
    $("#btnModalOK").on('click', function(){$("#modal-confirm").on('hidden.bs.modal',callback);});
    $('#modal-confirm').modal({show:true, backdrop:'static'});
}

//共用，确认对话框
function showModalConfirmHtml(content, callback) {
    $("#modalConfirmContent").html(content);
    $('#btnModalOK').unbind();
    $("#modal-confirm").unbind();
    $("#btnModalOK").on('click', callback);
    $('#modal-confirm').modal({show:true, backdrop:'static'});
}

//连续弹出多个confirm场合用
function showModalConfirmsHtml(content, callback) {
    $("#modalConfirmContent").html(content);
    $('#btnModalOK').unbind();
    $("#modal-confirm").unbind();
    $("#btnModalOK").on('click', function(){$("#modal-confirm").on('hidden.bs.modal',callback);});
    $('#modal-confirm').modal({show:true, backdrop:'static'});
}

// 共用，显示sco.message提示
function showScoMessage(strType, content){
	if (strType == 'ok' || strType == 'OK') {
		$.scojs_message(content, $.scojs_message.TYPE_OK);
	} else if (strType == 'error' || strType == 'ERROR') {
		$.scojs_message(content, $.scojs_message.TYPE_ERROR);
	}
}

// ===================>> 自定义对话框处理块.start <<===================
var parentEle;   // 父元素
var editDialog;  // 自定义对话框

// 借用iframe中的自定义模态对话框
function borrowCustomModalDialog(customModal) {
	parentEle = customModal.parent();
	editDialog = customModal;
	$("#customModalDialog").empty();
	editDialog.appendTo($("#customModalDialog"));
	// 给index页面添加一个遮罩层，因为iframe页面中的遮罩层不会自动加到index页面
	$(document.body).append("<div id=\"myModalBackdrop\" class=\"modal-backdrop in\"></div>");

	//处理时间控件
	$('.datetimepicker-default').datetimepicker();

    // 初始化MultiSelect控件
    $('#public-methods').multiSelect();
    $('#select-all').click(function(){
        $('#public-methods').multiSelect('select_all');
    });
    $('#deselect-all').click(function(){
        $('#public-methods').multiSelect('deselect_all');
    });
	return editDialog;
}

// 归还自定义模态对话框
function returnCustomModalDialog(){
	// 去掉自动加的遮罩层
	$("#myModalBackdrop").remove();
    parentEle && editDialog.appendTo(parentEle);
}
//===================>> 自定义对话框处理块.over <<===================
//详细显示页面打开
function detailUser() {
    var idString = userId;
    $("#detailUser").modal({
        show : true,
        backdrop : 'static'
    });
    jQuery.ajax({
        url : "/user/getUserDetail.action",
        type : "post",
        dataType : "json",
        data : {
            userID : idString
        },
        success : function(data) {
            console.log(data)
            jQuery("#txtUserName").val(data.userDetail.userFullname);
            jQuery("#txtUserDesc").val(data.userDetail.userDescription);
            jQuery("#txtUserAccount").val(data.userDetail.userAccount);
            jQuery("#txtUserMobile").val(data.userDetail.userMobile);
            jQuery("#txtUserMail").val(data.userDetail.userMail);
            jQuery("#txtUserRoles").val(data.userRolesVALUE);
            jQuery("#txtUserAdminRole").val(data.userAdminRoleVALUE);
            jQuery("#txtUserUnitsStations").val(data.userUnitsVALUE);
            $("#detailUser").modal({
                show : true,
                backdrop : 'static'
            });
        },
        error : function(XMLHttpRequest, textStatus, errorThrown) {
        }
    });
}

/**
 * 修改密码，要求必须输入旧密码、新密码，且长于6位新密码
 * @returns
 */
function showChangePassword() {
    $("#changePasswordForm")[0].reset();
    $("#changePasswordDialog").modal({
        show : true,
        backdrop : 'static'
    });
}
// 处理修改密码modalDialog
function handleChangePassword() {
    $("#changePasswordForm")[0].reset();
    // 修改密码form有效性验证
    $("#changePasswordForm").validate({
        debug : true,
        errorPlacement : function(error, element) {
            error.insertAfter(element);
        },
        rules : {
            txtOldPassword : {
                passwordValidate : true
            },
            txtNewPassword : {
                passwordValidate : true
            }
        },
        messages : {
            txtOldPassword : "旧密码必填，6-20位字母、数字、下划线",
            txtNewPassword : "新密码必填，6-20位字母、数字、下划线"
        }
    });
    
    // 密码输入校验
    $.validator.addMethod("passwordValidate", function(value, element) {
        var regx = /^[a-zA-Z0-9_]{6,}$/;
        return regx.test(value);
    }, "<font color='#E47068'>密码必填，6-20位字母、数字、下划线</font>");
    
    // 修改密码保存
    $("#saveNewPassword").click(function(e){
        if (!$("#changePasswordForm").valid()) {
            return false;
        }
        var aOldPassword = jQuery("#txtOldPassword").val();
        var aNewPassword = jQuery("#txtNewPassword").val();
        jQuery.ajax({
            url : "/user/changePassword.action",
            type : "post",
            dataType : "json",
            data : {
                oldPassword : aOldPassword,
                newPassword : aNewPassword
            },
            success : function(data) {
                if (data.result == "success") {
                    showScoMessage("ok", data.msg);
                    $('#changePasswordDialog').modal('hide');
                    // 改完密码注销重新登录
                    window.location.href="/user/logout.action";
                } else {
                    showScoMessage("error", data.msg);
                }
            },
            error : function(XMLHttpRequest, textStatus) {
                if (XMLHttpRequest.status == 500) {
                    var result = eval("(" + XMLHttpRequest.responseText + ")");
                    showScoMessage("error", "修改密码失败，可能是连接问题");
                }
            }
        });
    });
}


//tabs控件变量声明
var tabCounter = 2;
var iframeTemplate = "<iframe id='#{href}' name='#{href}' style='width:100%;height:100%;' class='contentFrame' scrolling='auto' frameborder='0' src='#{url}'></iframe>";
//over
/**
 * 动态添加tab（如果已经打开过，就显示出来，要求tab标签名字不能重复）
 * @returns
 */
function addTab(tabName, tabUrl) {
    var existTab = false;
    // 如果结点已经打开过，则把它显示出来
    if (!!tabName) {
        $("#OMSMainTab a").each(function(index, element) {
            if ($.trim(element.innerText) == $.trim(tabName)) {
                $(element).trigger("click");
                existTab = true;
            }
        });
    }
    if (!existTab) {
        var iframeId = "contentFrame-" + tabCounter;
        var tabContentHtml = $(iframeTemplate.replace(/#\{href\}/g, iframeId).replace(/#\{url\}/g, tabUrl));
    
        $tabs.scrollTabs('addTab', tabName, tabContentHtml);
        tabCounter++;
    }
    return false;
}

/**
 * 使用名称激活某个tab页
 * @param tabName
 * @returns
 */
function activeTab(tabName) {
    if (!!tabName) {
        $("#OMSMainTab a").each(function(index, element) {
            if ($.trim(element.innerText) == $.trim(tabName)) {
                $(element).trigger("click");
                return;
            }
        });
    }
}

/**
 * 当tab页切换时，重新定位导航菜单项（按名称对应哦）
 * @param menuItemName 要激活的菜单项名称
 * @returns
 */
function menuItemSelectedByName(menuItemName) {
    // 如果点击的是仪表盘，单独处理
    if (menuItemName.indexOf('仪表盘') > -1) {
        $("#side-menu").find("li").removeClass("active");
        // 把展开的都关上
        $("#side-menu ul").removeClass("in");
        // 点击一下仪表盘菜单
        $($("#side-menu > li:nth-child(2) > a")[0]).click();
        return false;
    }
    
    // 获取目标菜单的jquery对象$objJQueryLi
    var aList = $('#side-menu').find('a:contains("'+menuItemName+'")');
    var $objJQueryLi = null;
    for(var i=0,j=aList.length;i<j;i++){
        if(aList.eq(i).text()==menuItemName){
            $objJQueryLi = aList.eq(i).parent();
            break;
        }
    }
    
    // 如果没有该菜单，或者当前激活菜单就是目标菜单，不执行任何操作
    if(!$objJQueryLi||$objJQueryLi.hasClass('active')){
        return;
    }
    
    // 从目标菜单开始，向上找到最近的已展开的父菜单,再逐级展开直至target
    var $root = null;
    if($objJQueryLi.parents("li.active").length>0){
        $root = $objJQueryLi.parents("li.active:eq(0)")
        $root.children("ul:eq(0)").find("ul.in").removeClass("in");
        $objJQueryLi.parentsUntil($root[0],"li").children('a').click();
        $objJQueryLi.children("a").click();
    }else{
        $root = $('#side-menu');
        $root.find("ul.in").removeClass("in");
        $objJQueryLi.parentsUntil($root[0],"li").children('a').click();
        $objJQueryLi.children("a").click();
    }
    
    // 将已展开菜单项定位在视野范围内
    setTimeout(function(){
        $objJQueryLi[0].scrollIntoView();
    },500);
    
    
    
//    $('#side-menu a').each(function() {
//        var str = $(this)[0].innerText;
//        if (!!str && str== (menuItemName)) {
//        // if (!!str && str.indexOf(menuItemName) > -1) {
//            if (!$(this).parents(':eq(2)').hasClass('active')) {
//                $(this).parents(':eq(2)').children('a').get(0).click();   
//            }
//            if (!$(this).hasClass('active')) {
//                $(this).click();
//            }
//            return false;
//        }
//    });
};

// 递归：如果子节点包含

/**
 * 根据tab页名称，取对应的iframe
 * @param tabName tab页名称
 * @returns
 */
function getIframeByTabName(tabName) {
    var anIframe;
    if (!!tabName) {
        $("#OMSMainTab a").each(function(index, element) {
            if (element.innerText.indexOf(tabName) > -1) {
                var panelId = $(element).attr('href');
                anIframe = $(panelId).find("iframe")[0]
            }
        });
    }
    return anIframe;
}

/**
 * 根据tab页名称，取对应的iframe
 * @param tabName tab页名称
 * @returns
 */
function getCurrentIframe() {
    var currentTab = $("#OMSMainTab .ui-widget-header .ui-tabs-active > a")[0];
    if (!!currentTab) {
        var panelId = $(currentTab).attr('href');
        var returnFrame = $(panelId).find("iframe")[0];
        return returnFrame
    }
}

/**
 * 根据tab页名称，取对应的iframe
 * @param tabName tab页名称
 * @returns
 */
function refreshTabByTabName(tabName) {
    if (!!tabName) {
        $("#OMSMainTab a").each(function(index, element) {
            if ($.trim(element.innerText) == $.trim(tabName)) {
                var panelId = $(element).attr('href');
                $(panelId).find("iframe")[0].contentWindow.location.reload(true);
            }
        });
    }
}